package com.demo.lab.service;


import com.demo.lab.entity.Menu;
import com.demo.lab.entity.User;
import com.demo.lab.entity.base.PageDomain;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author lgw
 * @since 2021-04-16
 */
public interface UserService {

    /*
     * @Description:  判断用户是否被冻结
     * @Param:  用户名
     * @return:  true false
     */
    boolean checkUserLock(String username);

    /*
     * @Description: 判断用户账号密码是否正确
     * @Param:  user实体类
     * @return:  true false
     */
    boolean checkUserPwd(User user);

    /*
     * @Description: 获取一个用户
     * @Param:  UserRequest user
     * @return:   User
     */
    User findOne(User user);

    /*
     * @Description: 通过用户名获取用户
     * @Param:  用户名
     * @return:
     */
    User findOne(String username);

    /*
     * @Description: 通过用户id获取用户
     * @Param:  用户id
     * @return:
     */
    User findOneById(String userId);


    /*
     * @Description: 获取管理员菜单
     * @Param:  用户id
     * @return:   菜单列表
     */

    List<Menu> getMenuListToAdmin();

    /*
     * @Description: 获取用户菜单
     * @Param:  用户id
     * @return:   菜单列表
     */
    List<Menu> getMenuListToUser();

    /*
     * @Description: 获取老师菜单
     * @Param:  用户id
     * @return:   菜单列表
     */
    List<Menu> getMenuListToTeacher();

    /**
     * Describe: 根据 id 修改用户数据
     * Param: ids
     * Return: 操作结果
     */
    boolean update(User user);

    /**
     * Describe: 保存用户数据
     * Param: SysUser
     * Return: 操作结果
     */
    Boolean save(User user);


    /**
     * Describe: 根据条件查询数据  分页
     * Param: Notice
     * Return: 返回分页数据
     */
    PageInfo<User> page(User param, PageDomain pageDomain);

    /**
     * Describe: 根据 id 修改邮件数据
     * Param: id
     * Return: 操作结果
     */
    boolean delete(String id);

    /**
     * Describe: 根据 id 修改邮件数据
     * Param: ids
     * Return: 操作结果
     */
    boolean delete(String[] ids);

    List<User> lastLoginUser();
}
